The development of information technologies has enabled an enterprise, such as a business corporation, to capture data produced during daily operation of the enterprise. For example, a software company may capture and store data accumulated during the design, coding, and testing of a software product in various computing systems. Such data may include test cases that are used to verify whether the software product functions as expected. Such data may also include one or more dimensions that specify context(s) that a test case may execute in. A dimension may specify, for example, one or more product features that the text case focuses on. A dimension may also specify which build version of the product that the test case executes on. If the software product supports multiple user interface (hereinafter “UI”) languages, a dimension may indicate a particular UI language that the test case executes in. Data gathered during the development of a software product may also include execution results of each test case (hereinafter “test results”). For example, test results may indicate the success or failure rate of a test case that has been executed multiple times in a specific context.
Data accumulated by an enterprise may lack uniformity because data can be generated with different tools and/or criteria. For example, a software company may assign multiple teams to execute different aspects of a software development process, e.g., multiple coding teams to code different components of the software product and multiple testing teams to test different components of the software product. Each of these teams may develop its own system for tracking the progress of its work. As a result, different teams may use different means and criteria to collect data. Thus, data aggregated from the different teams in general lack uniformity and cannot accurately reflect the status of the whole product. For example, each testing team has its own database and each testing team creates separate reports based on the team's database. Because the databases generally are not connected and do not follow a common database schema, it is difficult to get consolidated reports for the software product as a whole.
Therefore, there exists a need to provide reliable and comprehensive data for a product while allowing different teams of the product to use their own systems to collect data resulting from their work. Ideally, data produced by different teams are gathered and uniformly stored in a central repository. The data in the central repository can thus accurately reflect the status of the product.
In addition, people with different responsibilities in an enterprise may want to review different reports concerning a product or service of the enterprise. For example, reports requested by a company executive and by a software engineer may be drastically different. The company executive may only be interested in whether a software product is ready for distribution. The software engineer may want to know how a test case for the software product performs in a particular context. Hence, it is desirable to provide different reports based on various abstractions of data available for a product or service of an enterprise, so people with different responsibilities in the enterprise may review reports according to specific needs.
Meanwhile, because a central repository may contain hundreds and thousands of data dimensions and their corresponding values, a query on the central repository can be time-consuming. Therefore, it is desirable to pre-calculate measurements of data of interest in the central repository so that a query will only need to retrieve the pre-calculated measurements of data of interest.
Therefore, there exists a need to gather data in an enterprise and uniformly store them in a central repository so that the data can accurately reflect the overall status of a product or service of the enterprise. There also exists a need to pre-calculate measurements of data of interest stored in the central repository so that any query on the data of interest can be responded quickly.